package com.vcc.service.boss.request.card;

import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;

@Data
@Getter
@Setter
public class BossCardTypeUpdateRequest implements Serializable {

    private Long id;

    @NotBlank(message = "卡描述不能为空")
    private String remark;

    @NotBlank(message = "卡地区不能为空")
    private String country;

    @NotNull(message = "是否可以开卡不能为空")
    private Integer verifyOpenCardStatus;

    @NotNull(message = "是否可以充值不能为空")
    private Integer verifyRechargeCardStatus;

    @NotNull(message = "是否可以转出不能为空")
    private Integer verifyOutCardStatus;

    @NotNull(message = "是否可以销卡不能为空")
    private Integer verifyCloseCardStatus;

    @NotNull(message = "是否可以冻结解冻不能为空")
    private Integer verifyFreezeUnFreezeCardStatus;

    @NotNull(message = "经销商最小金额不能为空")
    private BigDecimal dealerMinAmount;

    @NotNull(message = "开卡充值最小金额不能为空")
    @Min(value = 0, message = "金额不能小于0")
    private BigDecimal openCardRechargeMinAmount;

    @NotNull(message = "提现最小金额不能为空")
    @Min(value = 0, message = "金额不能小于0")
    private BigDecimal withdrawMinAmount;

    @NotNull(message = "充值最小金额不能为空")
    @Min(value = 0, message = "金额不能小于0")
    private BigDecimal rechargeMinAmount;

    @NotNull(message = "销卡最小金额不能为空")
    @Min(value = 0, message = "金额不能小于0")
    private BigDecimal closeCardMinAmount;

    @NotBlank(message = "提现状态不能为空")
    private String withdrawStatus;

    @NotBlank(message = "销卡状态不能为空")
    private String closeStatus;

    @NotNull(message = "小金额手续费阈值不能为空")
    private BigDecimal minAuthThresholdAmount;

    @Min(value = 0, message = "手续费不能小于0")
    @NotNull(message = "手续费不能为空")
    private BigDecimal authFee;
    @Min(value = 0, message = "手续费不能小于0")
    @NotNull(message = "手续费不能为空")
    private BigDecimal authFeeRate;
    @Min(value = 0, message = "手续费不能小于0")
    @NotNull(message = "手续费不能为空")
    private BigDecimal failFee;
    @Min(value = 0, message = "手续费不能小于0")
    @NotNull(message = "手续费不能为空")
    private BigDecimal failFeeRate;
    @Min(value = 0, message = "手续费不能小于0")
    @NotNull(message = "手续费不能为空")
    private BigDecimal minAuthFee;
    @Min(value = 0, message = "手续费不能小于0")
    @NotNull(message = "手续费不能为空")
    private BigDecimal minAuthFeeRate;
    @Min(value = 0, message = "手续费不能小于0")
    @NotNull(message = "手续费不能为空")
    private BigDecimal refundFee;
    @Min(value = 0, message = "手续费不能小于0")
    @NotNull(message = "手续费不能为空")
    private BigDecimal refundFeeRate;
    @Min(value = 0, message = "手续费不能小于0")
    @NotNull(message = "手续费不能为空")
    private BigDecimal reversalFee;
    @Min(value = 0, message = "手续费不能小于0")
    @NotNull(message = "手续费不能为空")
    private BigDecimal reversalFeeRate;
    @Min(value = 0, message = "手续费不能小于0")
    @NotNull(message = "手续费不能为空")
    private BigDecimal crossBorderFee;
    @Min(value = 0, message = "手续费不能小于0")
    @NotNull(message = "手续费不能为空")
    private BigDecimal crossBorderFeeRate;

    private String cardScenes;

    private String type;
}
